home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 219_01 / a65.doc < prev    next >
Text File  |  1989-01-11  |  45KB  |  1,264 lines

  1. /*
  2.     HEADER:        CUG129;
  3.     TITLE:        6502/65C02 Cross-Assemblers;
  4.     FILENAME:    A65.DOC;
  5.     VERSION:    0.1;
  6.     DATE:        08/27/1988;
  7.  
  8.     DESCRIPTION:    "These programs let you use your computer to assemble
  9.             code for the MOS Technology 6502 and Rockwell 65C02
  10.             microprocessors.  The program is written in portable
  11.             C rather than BDS C.  All assembler features are
  12.             supported except relocation, linkage, and macros.";
  13.  
  14.     KEYWORDS:    Software Development, Assemblers, Cross-Assemblers,
  15.             MOS Technology, Rockwell, 6502, 65C02;
  16.  
  17.     SYSTEM:        CP/M-80, CP/M-86, HP-UX, MSDOS, PCDOS, QNIX;
  18.     COMPILERS:    Aztec C86, Aztec CII, Eco-C, HP-UX, Microsoft C,
  19.             QNIX C;
  20.  
  21.     WARNINGS:    "HP-UX is a Berkeley 4.2 UNIX look-alike, so the port
  22.             to UNIX should be trivial.  So far, the program
  23.             compiles under two different MSDOS/PCDOS compilers, so
  24.             the port to other MSDOS/PCDOS compilers should be
  25.             easy.";
  26.  
  27.     AUTHORS:    William C. Colley III;
  28. */
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.                            6502/65C02 Cross-Assemblers
  44.  
  45.  
  46.                                    Version 0.1
  47.  
  48.  
  49.                     Copyright (c) 1986 William C. Colley, III
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.                             The manual such as it is.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.         Legal Note:    This package may be used for any commercial or 
  69.                        non-commercial purpose.  It may be copied and 
  70.                        distributed freely provided that any fee charged 
  71.                        by the distributor of the copy does not exceed the 
  72.                        sum of:  1) the cost of the media the copy is 
  73.                        written on,  2) any required costs of shipping the 
  74.                        copy, and  3) a nominal handling fee.  Any other 
  75.                        distribution requires the written permission of 
  76.                        the author.  Also, the author's copyright notices 
  77.                        shall not be removed from the program source, the 
  78.                        program object, or the program documentation.
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.                                 Table of Contents
  94.  
  95.         1.0  How to Use the Cross-Assembler Package ..................  3
  96.         2.0  Format of Cross-Assembler Source Lines ..................  4
  97.              2.1  Labels .............................................  5
  98.              2.2  Numeric Constants ..................................  5
  99.              2.3  String Constants ...................................  6
  100.              2.4  Expressions ........................................  6
  101.         3.0  Machine Opcodes .........................................  7
  102.         4.0  Pseudo Opcodes ..........................................  9
  103.              4.1  Pseudo-ops -- END ..................................  9
  104.              4.2  Pseudo-ops -- EQU .................................. 10
  105.              4.3  Pseudo-ops -- FCB .................................. 10
  106.              4.4  Pseudo-ops -- FCC .................................. 10
  107.              4.5  Pseudo-ops -- FDB .................................. 11
  108.              4.6  Pseudo-ops -- IF, ELSE, ENDI ....................... 11
  109.              4.7  Pseudo-ops -- INCL ................................. 12
  110.              4.8  Pseudo-ops -- ORG .................................. 12
  111.              4.9  Pseudo-ops -- PAGE ................................. 12
  112.              4.10 Pseudo-ops -- RMB .................................. 13
  113.              4.11 Pseudo-ops -- SET .................................. 13
  114.              4.12 Pseudo-ops -- TITL ................................. 13
  115.         5.0  Assembly Errors ......................................... 13
  116.              5.1  Error * -- Illegal or Missing Statement ............ 14
  117.              5.2  Error ( -- Parenthesis Imbalance ................... 14
  118.              5.3  Error " -- Missing Quotation Mark .................. 14
  119.              5.4  Error A -- Illegal Addressing Mode ................. 14
  120.              5.5  Error B -- Branch Target Too Distant ............... 14
  121.              5.6  Error D -- Illegal Digit ........................... 14
  122.              5.7  Error E -- Illegal Expression ...................... 15
  123.              5.8  Error I -- IF-ENDI Imbalance ....................... 15
  124.              5.9  Error L -- Illegal Label ........................... 15
  125.              5.10 Error M -- Multiply Defined Label .................. 15
  126.              5.11 Error O -- Illegal Opcode .......................... 15
  127.              5.12 Error P -- Phasing Error ........................... 16
  128.              5.13 Error R -- Illegal Register ........................ 16
  129.              5.14 Error S -- Illegal Syntax .......................... 16
  130.              5.15 Error T -- Too Many Arguments ...................... 16
  131.              5.16 Error U -- Undefined Label ......................... 16
  132.              5.17 Error V -- Illegal Value ........................... 16
  133.         6.0  Warning Messages ........................................ 17
  134.              6.1  Warning -- Illegal Option Ignored .................. 17
  135.              6.2  Warning -- -l Option Ignored -- No File Name ....... 17
  136.              6.3  Warning -- -o Option Ignored -- No File Name ....... 17
  137.              6.4  Warning -- Extra Source File Ignored ............... 17
  138.              6.5  Warning -- Extra Listing File Ignored .............. 17
  139.              6.6  Warning -- Extra Object File Ignored ............... 17
  140.         7.0  Fatal Error Messages .................................... 17
  141.              7.1  Fatal Error -- No Source File Specified ............ 17
  142.              7.2  Fatal Error -- Source File Did Not Open ............ 18
  143.              7.3  Fatal Error -- Listing File Did Not Open ........... 18
  144.              7.4  Fatal Error -- Object File Did Not Open ............ 18
  145.              7.5  Fatal Error -- Error Reading Source File ........... 18
  146.              7.6  Fatal Error -- Disk or Directory Full .............. 18
  147.              7.7  Fatal Error -- File Stack Overflow ................. 18
  148.  
  149.  
  150.  
  151.                                         1
  152.  
  153.  
  154.  
  155.              7.8  Fatal Error -- If Stack Overflow ................... 18
  156.              7.9  Fatal Error -- Too Many Symbols .................... 18
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.                                         2
  213.  
  214.  
  215.  
  216.         1.0  How to Use the Cross-Assembler Package
  217.  
  218.              First, the question, "What does a cross-assembler do?" needs 
  219.         to be addressed as there is considerable confusion on this point.  
  220.         A cross-assembler is just like any other assembler except that it 
  221.         runs on some CPU other than the one for which it assembles code.  
  222.         For example, this package assembles 6502 or 65C02 source code 
  223.         into 6502 or 65C02 object code, but it runs on an 8080, a Z-80, 
  224.         an 8088, or whatever other CPU you happen to have a C compiler 
  225.         for.  The reason that cross-assemblers are useful is that you 
  226.         probably already have a CPU with memory, disk drives, a text 
  227.         editor, an operating system, and all sorts of hard-to-build or 
  228.         expensive facilities on hand.  A cross-assembler allows you to 
  229.         use these facilites to develop code for a 6502 or 65C02.
  230.  
  231.         This program requires one input file (your 6502 or 65C02 source 
  232.         code) and zero to two output files (the listing and the object).  
  233.         The input file MUST be specified, or the assembler will bomb on a 
  234.         fatal error.  The listing and object files are optional.  If no 
  235.         listing file is specified, no listing is generated, and if no 
  236.         object file is specified, no object is generated.  If the object 
  237.         file is specified, the object is written to this file in "Intel 
  238.         hexadecimal" format.
  239.  
  240.              The command line for the 6502 cross-assembler looks like 
  241.         this:
  242.  
  243.                   A65 source_file { -l list_file } { -o object_file }
  244.  
  245.         where the { } indicates that the specified item is optional.
  246.  
  247.